[INFO] fetching crate bnto 0.1.4...
[INFO] testing bnto-0.1.4 against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] extracting crate bnto 0.1.4 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate bnto 0.1.4
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate bnto 0.1.4
[INFO] tweaked toml for crates.io crate bnto 0.1.4 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate bnto 0.1.4 on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate bnto 0.1.4 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 18ff2e4a10b994cc35c966034327f6f7500926a59c20102e18b9e4c363322ef1
[INFO] running `Command { std: "docker" "start" "-a" "18ff2e4a10b994cc35c966034327f6f7500926a59c20102e18b9e4c363322ef1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "18ff2e4a10b994cc35c966034327f6f7500926a59c20102e18b9e4c363322ef1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "18ff2e4a10b994cc35c966034327f6f7500926a59c20102e18b9e4c363322ef1", kill_on_drop: false }`
[INFO] [stdout] 18ff2e4a10b994cc35c966034327f6f7500926a59c20102e18b9e4c363322ef1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c2038bf7cc34e6c4dab1c49f4c3bf8e5331ad757667b227cf35221d6bf9149cf
[INFO] running `Command { std: "docker" "start" "-a" "c2038bf7cc34e6c4dab1c49f4c3bf8e5331ad757667b227cf35221d6bf9149cf", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.113
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling bumpalo v3.20.2
[INFO] [stderr]    Compiling wasm-bindgen v0.2.113
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]    Compiling float-cmp v0.9.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling zune-core v0.5.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling strict-num v0.1.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling zune-jpeg v0.5.12
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling tiny-skia-path v0.12.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling fontconfig-parser v0.5.8
[INFO] [stderr]    Compiling pxfm v0.1.27
[INFO] [stderr]    Compiling kurbo v0.13.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling memmap2 v0.9.10
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling unicode-ccc v0.4.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling unicode-bidi-mirroring v0.4.0
[INFO] [stderr]    Compiling unicode-script v0.5.8
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling core_maths v0.1.1
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling ttf-parser v0.25.1
[INFO] [stderr]    Compiling simplecss v0.2.2
[INFO] [stderr]    Compiling roxmltree v0.21.1
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling data-url v0.3.2
[INFO] [stderr]    Compiling imagesize v0.14.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling pico-args v0.5.0
[INFO] [stderr]    Compiling unicode-vo v0.1.0
[INFO] [stderr]    Compiling xmlwriter v0.1.0
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling svgtypes v0.16.1
[INFO] [stderr]    Compiling gif v0.14.2
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rgb v0.8.53
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling tiny-skia v0.12.0
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling quantizr v1.4.3
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling moxcms v0.7.11
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling fontdb v0.23.0
[INFO] [stderr]    Compiling rustybuzz v0.20.1
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.113
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.12
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling usvg v0.47.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.113
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling resvg v0.47.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling image v0.25.9
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling bnto-core v0.1.3
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling js-sys v0.3.90
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling tonkotsu v0.1.0
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling bnto-shell v0.1.3
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling bnto-encode v0.1.3
[INFO] [stderr]    Compiling bnto-vector v0.1.3
[INFO] [stderr]    Compiling web-sys v0.3.90
[INFO] [stderr]    Compiling bnto-spreadsheet v0.1.3
[INFO] [stderr]    Compiling bnto-image v0.1.3
[INFO] [stderr]    Compiling bnto-file v0.1.3
[INFO] [stderr]    Compiling bnto-engine v0.1.4
[INFO] [stderr]    Compiling bnto v0.1.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 30s
[INFO] running `Command { std: "docker" "inspect" "c2038bf7cc34e6c4dab1c49f4c3bf8e5331ad757667b227cf35221d6bf9149cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c2038bf7cc34e6c4dab1c49f4c3bf8e5331ad757667b227cf35221d6bf9149cf", kill_on_drop: false }`
[INFO] [stdout] c2038bf7cc34e6c4dab1c49f4c3bf8e5331ad757667b227cf35221d6bf9149cf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 63fc21380d6c22104f855563ba0fe0a0ed3dd98c598a50ea5dae71b9e6f5850b
[INFO] running `Command { std: "docker" "start" "-a" "63fc21380d6c22104f855563ba0fe0a0ed3dd98c598a50ea5dae71b9e6f5850b", kill_on_drop: false }`
[INFO] [stderr]    Compiling bnto v0.1.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 13.37s
[INFO] running `Command { std: "docker" "inspect" "63fc21380d6c22104f855563ba0fe0a0ed3dd98c598a50ea5dae71b9e6f5850b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "63fc21380d6c22104f855563ba0fe0a0ed3dd98c598a50ea5dae71b9e6f5850b", kill_on_drop: false }`
[INFO] [stdout] 63fc21380d6c22104f855563ba0fe0a0ed3dd98c598a50ea5dae71b9e6f5850b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 04ff98064c9834b2569dc6f878b9de19b48e8851bf6491b2cc2911bb303080e0
[INFO] running `Command { std: "docker" "start" "-a" "04ff98064c9834b2569dc6f878b9de19b48e8851bf6491b2cc2911bb303080e0", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.39s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/bnto-7bc52ecbd46eb432)
[INFO] [stdout] 
[INFO] [stdout] running 847 tests
[INFO] [stdout] test context::tests::home_dir_returns_configured_path ... ok
[INFO] [stdout] test context::tests::env_var_resolution_prefers_project_over_user ... ok
[INFO] [stdout] test context::tests::load_dotenv_file_missing_returns_empty ... ok
[INFO] [stdout] test context::tests::output_dir_returns_configured_path ... ok
[INFO] [stdout] test catalog::tests::catalog_missing_library_dir_still_has_bundled ... ok
[INFO] [stdout] test catalog::tests::catalog_is_bundled_correct ... ok
[INFO] [stdout] test context::tests::env_var_falls_through_to_user_env ... ok
[INFO] [stdout] test context::tests::load_dotenv_file_reads_project_env ... ok
[INFO] [stdout] test context::tests::native_context_reads_project_dotenv ... ok
[INFO] [stdout] test catalog::tests::catalog_resolve_unknown_returns_none ... ok
[INFO] [stdout] test context::tests::test_native_context_run_command_not_found ... ok
[INFO] [stdout] test context::tests::test_native_context_env_var_missing ... ok
[INFO] [stdout] test context::tests::test_native_context_work_dir ... ok
[INFO] [stdout] test context::tests::system_env_takes_priority_over_project_dotenv ... ok
[INFO] [stdout] test context::tests::test_native_context_env_var_path ... ok
[INFO] [stdout] test context::tests::test_temp_file_is_created_on_disk ... ok
[INFO] [stdout] test dry_run::files::tests::extract_previews_handles_missing_metadata ... ok
[INFO] [stdout] test dry_run::files::tests::extract_previews_reads_rename_metadata ... ok
[INFO] [stdout] test dry_run::files::tests::extract_previews_multiple_files ... ok
[INFO] [stdout] test context::tests::test_temp_file_suffix_preserved ... ok
[INFO] [stdout] test dry_run::format::tests::format_shows_file_previews ... ok
[INFO] [stdout] test dry_run::format::tests::format_shows_no_shell_message_when_empty ... ok
[INFO] [stdout] test dry_run::format::tests::format_shows_shell_commands ... ok
[INFO] [stdout] test catalog::tests::catalog_bundled_excludes_library_entries ... ok
[INFO] [stdout] test catalog::tests::catalog_empty_library_dir_still_has_bundled ... ok
[INFO] [stdout] test context::tests::test_native_context_run_command_echo ... ok
[INFO] [stdout] test context::tests::test_temp_file_no_collisions ... ok
[INFO] [stdout] test dry_run::shell::tests::format_command_line_quotes_special ... ok
[INFO] [stdout] test dry_run::format::tests::format_shows_unchanged_files ... ok
[INFO] [stdout] test dry_run::tests::dry_run_resolves_field_defaults ... ok
[INFO] [stdout] test catalog::tests::catalog_loads_bundled_recipes ... ok
[INFO] [stdout] test catalog::tests::catalog_entries_sorted_by_category_then_slug ... ok
[INFO] [stdout] test dry_run::tests::dry_run_image_recipe_no_dependencies ... ok
[INFO] [stdout] test catalog::tests::catalog_library_skips_invalid_json ... ok
[INFO] [stdout] test dry_run::tests::dry_run_has_dependencies ... ok
[INFO] [stdout] test catalog::tests::catalog_loads_library_from_disk ... ok
[INFO] [stdout] test dry_run::shell::tests::format_command_line_simple ... ok
[INFO] [stdout] test catalog::tests::catalog_library_overrides_bundled ... ok
[INFO] [stdout] test dry_run::tests::dry_run_unknown_recipe ... ok
[INFO] [stdout] test dry_run::tests::dry_run_shows_runtime_placeholders ... ok
[INFO] [stdout] test dry_run::tests::dry_run_no_shell_commands ... ok
[INFO] [stdout] test dry_run::tests::dry_run_output_mode ... ok
[INFO] [stdout] test context::tests::run_command_streaming_captures_both_streams ... ok
[INFO] [stdout] test dry_run::tests::dry_run_with_param_override ... ok
[INFO] [stdout] test dry_run::tests::format_dry_run_contains_command ... ok
[INFO] [stdout] test dry_run::tests::dry_run_known_recipe_with_shell_commands ... ok
[INFO] [stdout] test info::tests::test_format_contains_category ... ok
[INFO] [stdout] test info::tests::test_format_contains_node_types ... ok
[INFO] [stdout] test info::tests::test_format_no_deps_section_when_empty ... ok
[INFO] [stdout] test info::tests::test_format_shows_dependencies_when_present ... ok
[INFO] [stdout] test input::tests::test_apply_overrides_simple ... ok
[INFO] [stdout] test info::tests::test_format_contains_name ... ok
[INFO] [stdout] test info::tests::test_format_shows_input_mode ... ok
[INFO] [stdout] test context::tests::run_command_streaming_returns_stdout ... ok
[INFO] [stdout] test context::tests::run_command_streaming_error_includes_stderr ... ok
[INFO] [stdout] test dry_run::tests::format_dry_run_no_shell_shows_message ... ok
[INFO] [stdout] test input::tests::test_apply_overrides_field_and_param_together ... ok
[INFO] [stdout] test input::tests::test_empty_node_id_override_rejected ... ok
[INFO] [stdout] test input::tests::test_inject_param_missing_node ... ok
[INFO] [stdout] test input::tests::test_inject_param_nested ... ok
[INFO] [stdout] test input::tests::test_inject_param_top_level ... ok
[INFO] [stdout] test input::tests::test_is_url_invalid ... ok
[INFO] [stdout] test input::tests::test_parse_override_empty_node_id ... ok
[INFO] [stdout] test input::tests::test_is_url_valid ... ok
[INFO] [stdout] test input::tests::test_node_field_override_updates_default ... ok
[INFO] [stdout] test input::tests::test_parse_override_qualified_url_value ... ok
[INFO] [stdout] test input::tests::test_parse_override_value_with_equals ... ok
[INFO] [stdout] test catalog::tests::catalog_resolve_by_slug ... ok
[INFO] [stdout] test info::tests::test_get_info_extracts_input_mode ... ok
[INFO] [stdout] test info::tests::test_get_info_unknown_recipe ... ok
[INFO] [stdout] test input::tests::test_node_field_override_falls_back_to_param ... ok
[INFO] [stdout] test input::tests::test_apply_overrides_qualified ... ok
[INFO] [stdout] test input::tests::test_parse_param_value_integer ... ok
[INFO] [stdout] test input::tests::test_parse_param_value_float ... ok
[INFO] [stdout] test input::tests::test_parse_param_value_string ... ok
[INFO] [stdout] test input::tests::test_parse_override_simple_url_value ... ok
[INFO] [stdout] test input::tests::test_parse_param_value_bool ... ok
[INFO] [stdout] test input::tests::test_prepare_inputs_no_args_file_error ... ok
[INFO] [stdout] test install::tests::no_deps_detected ... ok
[INFO] [stdout] test input::tests::test_prepare_inputs_url_injects_into_node ... ok
[INFO] [stdout] test input::tests::test_prepare_inputs_url_validates ... ok
[INFO] [stdout] test input::tests::test_prepare_inputs_url ... ok
[INFO] [stdout] test input::tests::test_prepare_inputs_no_args_url_error ... ok
[INFO] [stdout] test install::tests::all_deps_already_satisfied ... ok
[INFO] [stdout] test install::tests::missing_deps_are_listed ... ok
[INFO] [stdout] test info::tests::test_get_info_video_has_dependencies ... ok
[INFO] [stdout] test install::tests::run_install_command_failure ... ok
[INFO] [stdout] test install::tests::run_install_command_success ... ok
[INFO] [stdout] test io::tests::test_guess_mime_csv ... ok
[INFO] [stdout] test io::tests::test_guess_mime_jpeg ... ok
[INFO] [stdout] test io::tests::test_guess_mime_png ... ok
[INFO] [stdout] test io::tests::test_guess_mime_unknown ... ok
[INFO] [stdout] test io::tests::test_overwrite_mode_errors_on_bytes_data ... ok
[INFO] [stdout] test list::tests::test_format_contains_category_headers ... ok
[INFO] [stdout] test io::tests::test_write_results_preserves_source_for_path_refs ... ok
[INFO] [stdout] test info::tests::test_get_info_image_recipe_no_dependencies ... ok
[INFO] [stdout] test install::tests::read_recipe_json_from_catalog ... ok
[INFO] [stdout] test info::tests::test_get_info_extracts_node_types ... ok
[INFO] [stdout] test list::tests::test_format_contains_descriptions ... ok
[INFO] [stdout] test list::tests::test_format_empty_groups ... ok
[INFO] [stdout] test list::tests::test_group_recipes_empty_input ... ok
[INFO] [stdout] test list::tests::test_group_recipes_preserves_all_entries ... ok
[INFO] [stdout] test list::tests::test_group_recipes_categories_sorted_alphabetically ... ok
[INFO] [stdout] test list::tests::test_group_recipes_groups_by_category ... ok
[INFO] [stdout] test list::tests::test_group_recipes_sorts_within_category ... ok
[INFO] [stdout] test io::tests::test_overwrite_mode_strips_directory_from_filename ... ok
[INFO] [stdout] test io::tests::test_message_mode_writes_no_files ... ok
[INFO] [stdout] test io::tests::test_read_pipeline_file_directory ... ok
[INFO] [stdout] test io::tests::test_overwrite_mode_noop_when_name_unchanged ... ok
[INFO] [stdout] test migrate::tests::detects_compression_param_needs_migration ... ok
[INFO] [stdout] test migrate::tests::find_recipe_files_filters_correctly ... ok
[INFO] [stdout] test io::tests::test_write_results_creates_subdirectories ... ok
[INFO] [stdout] test migrate::tests::already_migrated_is_noop ... ok
[INFO] [stdout] test io::tests::test_none_mode_writes_no_files ... ok
[INFO] [stdout] test migrate::tests::handles_pipeline_definition_with_children ... ok
[INFO] [stdout] test io::tests::test_write_mode_copies_files_to_output_dir ... ok
[INFO] [stdout] test io::tests::test_overwrite_mode_renames_source_file_in_place ... ok
[INFO] [stdout] test logging::tests::writes_and_flushes_entries ... ok
[INFO] [stdout] test migrate::tests::idempotent_double_run ... ok
[INFO] [stdout] test logging::tests::respects_min_level ... ok
[INFO] [stdout] test logging::tests::includes_timing_in_milliseconds ... ok
[INFO] [stdout] test migrate::tests::migrate_file_with_dry_run_does_not_write ... ok
[INFO] [stdout] test list::tests::test_format_contains_recipe_slugs ... ok
[INFO] [stdout] test migrate::tests::handles_deeply_nested_nodes ... ok
[INFO] [stdout] test logging::tests::creates_session_log_file ... ok
[INFO] [stdout] test migrate::tests::migrate_file_noop_does_not_create_backup ... ok
[INFO] [stdout] test info::tests::test_get_info_known_recipe ... ok
[INFO] [stdout] test logging::tests::includes_timing_in_microseconds ... ok
[INFO] [stdout] test migrate::tests::renames_compression_to_quality ... ok
[INFO] [stdout] test package_manager::tests::detect_apt ... ok
[INFO] [stdout] test migrate::tests::migrates_file_sanitize_to_file_rename ... ok
[INFO] [stdout] test package_manager::tests::detect_brew ... ok
[INFO] [stdout] test migrate::tests::multiple_migrations_applied_sequentially ... ok
[INFO] [stdout] test info::tests::test_get_info_multi_node_recipe ... ok
[INFO] [stdout] test package_manager::tests::detect_none_when_no_pm_available ... ok
[INFO] [stdout] test migrate::tests::unknown_recipe_format_is_left_alone ... ok
[INFO] [stdout] test package_manager::tests::display_command_formats_correctly ... ok
[INFO] [stdout] test package_manager::tests::install_command_brew ... ok
[INFO] [stdout] test migrate::tests::migrate_file_writes_and_creates_backup ... ok
[INFO] [stdout] test package_manager::tests::detect_choco ... ok
[INFO] [stdout] test progress::tests::test_braille_frame_wraps ... ok
[INFO] [stdout] test progress::tests::test_completion_summary_plural ... ok
[INFO] [stdout] test progress::tests::test_completion_summary_zero_files ... ok
[INFO] [stdout] test package_manager::tests::detect_pacman ... ok
[INFO] [stdout] test package_manager::tests::detect_prefers_brew_over_apt ... ok
[INFO] [stdout] test package_manager::tests::install_command_apt ... ok
[INFO] [stdout] test progress::tests::test_completion_summary_singular ... ok
[INFO] [stdout] test package_manager::tests::name_returns_human_readable ... ok
[INFO] [stdout] test progress::tests::test_braille_frame_cycles ... ok
[INFO] [stdout] test package_manager::tests::install_command_choco ... ok
[INFO] [stdout] test list::tests::test_all_catalog_recipes_appear_in_output ... ok
[INFO] [stdout] test progress::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test package_manager::tests::install_command_pacman ... ok
[INFO] [stdout] test progress::tests::test_format_duration_millis ... ok
[INFO] [stdout] test progress::tests::test_progressive_output_creates_subdirectories ... ok
[INFO] [stdout] test progress::tests::test_stderr_reporter_handles_command_output ... ok
[INFO] [stdout] test storage::config::tests::default_has_version_3 ... ok
[INFO] [stdout] test storage::atomic::tests::atomic_write_creates_file ... ok
[INFO] [stdout] test progress::tests::test_stderr_reporter_handles_failure ... ok
[INFO] [stdout] test storage::config::tests::paths_home_serializes ... ok
[INFO] [stdout] test storage::atomic::tests::atomic_write_creates_parent_dirs ... ok
[INFO] [stdout] test storage::config::tests::paths_section_omits_none ... ok
[INFO] [stdout] test storage::atomic::tests::atomic_write_overwrites_existing ... ok
[INFO] [stdout] test storage::config::tests::missing_file_returns_default ... ok
[INFO] [stdout] test storage::config::tests::v2_config_loads_ignoring_old_path_fields ... ok
[INFO] [stdout] test storage::paths::tests::bnto_home_overrides_default ... ok
[INFO] [stdout] test storage::config::tests::serde_default_fields ... ok
[INFO] [stdout] test storage::config::tests::v1_config_loads_with_defaults_for_new_fields ... ok
[INFO] [stdout] test storage::paths::tests::config_file_at_home_root ... ok
[INFO] [stdout] test storage::migrations::v1_unified_home::tests::parses_v1_config_format ... ok
[INFO] [stdout] test storage::paths::tests::output_dir_under_home ... ok
[INFO] [stdout] test progress::tests::test_stderr_reporter_handles_full_lifecycle ... ok
[INFO] [stdout] test storage::config::tests::version_present_in_serialized ... ok
[INFO] [stdout] test storage::paths::tests::cache_dir_under_home ... ok
[INFO] [stdout] test storage::paths::tests::resolve_defaults_to_dot_bnto ... ok
[INFO] [stdout] test storage::paths::tests::resolve_returns_some ... ok
[INFO] [stdout] test storage::paths::tests::with_config_override_keeps_default_when_none ... ok
[INFO] [stdout] test storage::paths::tests::with_config_override_applies_custom_home ... ok
[INFO] [stdout] test storage::paths::tests::state_files_under_state_subdir ... ok
[INFO] [stdout] test storage::paths::tests::recipes_dir_under_home ... ok
[INFO] [stdout] test storage::paths::tests::with_config_override_ignores_empty_string ... ok
[INFO] [stdout] test storage::runner::tests::creates_config_if_missing ... ok
[INFO] [stdout] test storage::paths::tests::ensure_dirs_creates_all ... ok
[INFO] [stdout] test storage::runner::tests::skips_migrations_at_or_below_current_version ... ok
[INFO] [stdout] test telemetry::bucket::tests::duration_buckets ... ok
[INFO] [stdout] test storage::migrations::v1_unified_home::tests::copies_recipes_from_old_data_dir ... ok
[INFO] [stdout] test storage::runner::tests::bumps_version_after_each_success ... ok
[INFO] [stdout] test storage::runner::tests::idempotent_rerun ... ok
[INFO] [stdout] test telemetry::ci::tests::empty_ci_var_not_detected ... ok
[INFO] [stdout] test telemetry::ci::tests::ci_true_detected ... ok
[INFO] [stdout] test telemetry::bucket::tests::file_count_buckets ... ok
[INFO] [stdout] test storage::config::tests::preserves_all_fields ... ok
[INFO] [stdout] test telemetry::bucket::tests::file_size_buckets ... ok
[INFO] [stdout] test storage::paths::tests::ensure_dirs_idempotent ... ok
[INFO] [stdout] test storage::config::tests::save_load_roundtrip ... ok
[INFO] [stdout] test telemetry::ci::tests::github_actions_detected ... ok
[INFO] [stdout] test telemetry::config::tests::config_path_returns_some ... ok
[INFO] [stdout] test telemetry::ci::tests::no_ci_vars_means_not_ci ... ok
[INFO] [stdout] test storage::migrations::v1_unified_home::tests::does_not_overwrite_existing_recipes ... ok
[INFO] [stdout] test telemetry::ci::tests::gitlab_ci_detected ... ok
[INFO] [stdout] test storage::migrations::v1_unified_home::tests::copies_trusted_json ... ok
[INFO] [stdout] test telemetry::config::tests::each_default_gets_unique_id ... ok
[INFO] [stdout] test telemetry::config::tests::default_config_values ... ok
[INFO] [stdout] test telemetry::config::tests::load_handles_partial_json ... ok
[INFO] [stdout] test telemetry::client::tests::send_event_to_invalid_key_does_not_panic ... ok
[INFO] [stdout] test telemetry::config::tests::anonymous_id_is_uuid_v4_format ... ok
[INFO] [stdout] test telemetry::config::tests::load_handles_invalid_json ... ok
[INFO] [stdout] test storage::migrations::v1_unified_home::tests::migrates_v1_config_values ... ok
[INFO] [stdout] test telemetry::debug::tests::debug_disabled_by_default ... ok
[INFO] [stdout] test telemetry::debug::tests::debug_not_enabled_with_other_values ... ok
[INFO] [stdout] test telemetry::config::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test telemetry::consent::tests::second_run_disabled_returns_false ... ok
[INFO] [stdout] test telemetry::consent::tests::second_run_skips_consent_and_returns_enabled ... ok
[INFO] [stdout] test telemetry::debug::tests::debug_enabled_with_1 ... ok
[INFO] [stdout] test telemetry::events::tests::categorize_unsupported ... ok
[INFO] [stdout] test telemetry::events::tests::cli_command_event_shape ... ok
[INFO] [stdout] test telemetry::events::tests::cli_error_categorizes ... ok
[INFO] [stdout] test telemetry::events::tests::cli_error_permission_denied ... ok
[INFO] [stdout] test telemetry::events::tests::cli_command_run ... ok
[INFO] [stdout] test telemetry::events::tests::cli_error_unknown_category ... ok
[INFO] [stdout] test telemetry::events::tests::cli_recipe_run_buckets_values ... ok
[INFO] [stdout] test telemetry::events::tests::cli_recipe_run_with_no_params_omits_field ... ok
[INFO] [stdout] test telemetry::events::tests::cli_tui_session_shape ... ok
[INFO] [stdout] test telemetry::events::tests::categorize_timeout ... ok
[INFO] [stdout] test telemetry::tests::active_when_all_conditions_met ... ok
[INFO] [stdout] test telemetry::tests::disabled_config_means_inactive ... ok
[INFO] [stdout] test telemetry::tests::inactive_when_all_disabled ... ok
[INFO] [stdout] test telemetry::tests::inactive_when_config_disabled ... ok
[INFO] [stdout] test telemetry::tests::inactive_when_consent_not_given ... ok
[INFO] [stdout] test telemetry::events::tests::cli_recipe_run_with_params_captures_names ... ok
[INFO] [stdout] test telemetry::tests::is_env_disabled_respects_bnto_var ... ok
[INFO] [stdout] test telemetry::tests::is_env_disabled_respects_do_not_track ... ok
[INFO] [stdout] test tests::test_format_duration_seconds ... ok
[INFO] [stdout] test trust::tests::badge_bundled ... ok
[INFO] [stdout] test tests::test_format_duration_millis ... ok
[INFO] [stdout] test trust::tests::badge_non_bundled_no_shell ... ok
[INFO] [stdout] test trust::tests::bundled_no_shell_is_trusted ... ok
[INFO] [stdout] test trust::tests::collect_names_deduplicates ... ok
[INFO] [stdout] test telemetry::consent::tests::first_run_shows_consent_and_returns_false ... ok
[INFO] [stdout] test trust::tests::collect_names_empty_for_non_shell ... ok
[INFO] [stdout] test trust::tests::has_shell_commands_deep_nesting ... ok
[INFO] [stdout] test trust::tests::collect_names_from_shell_nodes ... ok
[INFO] [stdout] test trust::tests::bundled_with_shell_is_trusted ... ok
[INFO] [stdout] test telemetry::tests::inactive_when_env_disabled ... ok
[INFO] [stdout] test telemetry::tests::set_enabled_false_persists_to_config ... ok
[INFO] [stdout] test trust::tests::has_shell_commands_nested ... ok
[INFO] [stdout] test trust::tests::has_shell_commands_false ... ok
[INFO] [stdout] test trust::tests::hash_is_64_hex_chars ... ok
[INFO] [stdout] test trust::tests::non_bundled_no_shell_is_trusted ... ok
[INFO] [stdout] test storage::runner::tests::missing_config_treats_as_version_1 ... ok
[INFO] [stdout] test trust::tests::hash_is_deterministic ... ok
[INFO] [stdout] test trust::tests::store_load_missing_file_returns_default ... ok
[INFO] [stdout] test trust::tests::has_shell_commands_true ... ok
[INFO] [stdout] test trust::tests::non_bundled_with_shell_first_run ... ok
[INFO] [stdout] test trust::tests::non_bundled_with_shell_approved ... ok
[INFO] [stdout] test trust::tests::hash_changes_with_content ... ok
[INFO] [stdout] test trust::tests::store_load_invalid_json_returns_default ... ok
[INFO] [stdout] test telemetry::events::tests::categorize_unknown_recipe ... ok
[INFO] [stdout] test trust::tests::store_roundtrip ... ok
[INFO] [stdout] test storage::runner::tests::applies_pending_in_order ... ok
[INFO] [stdout] test storage::tests::ensure_ready_creates_dirs_and_runs_migrations ... ok
[INFO] [stdout] test storage::runner::tests::stops_on_first_failure ... ok
[INFO] [stdout] test tui::app::tests::add_to_library_refreshes_home_library_names ... ok
[INFO] [stdout] test tui::app::tests::back_from_normal_picker_goes_to_detail_not_settings ... ok
[INFO] [stdout] test tui::app::tests::add_to_library_writes_recipe_file ... ok
[INFO] [stdout] test storage::tests::ensure_ready_is_idempotent ... ok
[INFO] [stdout] test trust::tests::badge_non_bundled_with_shell ... ok
[INFO] [stdout] test tui::app::tests::add_to_library_confirm_overwrites ... ok
[INFO] [stdout] test tui::app::tests::app_model_has_paths_field ... ok
[INFO] [stdout] test tui::app::tests::back_from_results_clears_results_model ... ok
[INFO] [stdout] test tui::app::tests::back_from_library_returns_to_home ... ok
[INFO] [stdout] test tui::app::tests::back_from_editor_clears_editor_model ... ok
[INFO] [stdout] test tui::app::tests::add_to_library_collision_prompts ... ok
[INFO] [stdout] test tui::app::tests::back_from_settings_picker_returns_to_settings ... ok
[INFO] [stdout] test tui::app::tests::back_from_picker_clears_overrides ... ok
[INFO] [stdout] test tui::app::tests::back_from_execution_clears_execution_model ... ok
[INFO] [stdout] test tui::app::tests::back_from_settings_clears_settings_model ... ok
[INFO] [stdout] test tui::app::tests::back_from_detail_library_origin_returns_to_library ... ok
[INFO] [stdout] test tui::app::tests::default_model_uses_isolated_paths ... ok
[INFO] [stdout] test tui::app::tests::editor_save_and_back_navigates_away ... ok
[INFO] [stdout] test tui::app::tests::config_confirmed_file_mode_goes_to_execution ... ok
[INFO] [stdout] test tui::app::tests::editor_save_writes_file_and_clears_dirty ... ok
[INFO] [stdout] test tui::app::tests::editor_save_updates_source_to_file ... ok
[INFO] [stdout] test tui::app::tests::execution_complete_builds_results_from_output_data ... ok
[INFO] [stdout] test tui::app::tests::config_confirmed_captures_param_overrides ... ok
[INFO] [stdout] test tui::app::tests::back_from_editor_returns_to_origin ... ok
[INFO] [stdout] test tui::app::tests::cancel_execution_returns_to_detail ... ok
[INFO] [stdout] test tui::app::tests::back_navigation_from_home_origin ... ok
[INFO] [stdout] test tui::app::tests::config_confirmed_url_mode_skips_picker ... ok
[INFO] [stdout] test tui::app::tests::home_confirm_navigates_to_settings ... ok
[INFO] [stdout] test tui::app::tests::full_happy_path_journey ... ok
[INFO] [stdout] test tui::app::tests::home_message_forwarded ... ok
[INFO] [stdout] test tui::app::tests::app_model_has_status_message_field ... ok
[INFO] [stdout] test tui::app::tests::forward_navigation_follows_happy_path ... ok
[INFO] [stdout] test tui::app::tests::config_confirmed_goes_to_execution ... ok
[INFO] [stdout] test tui::app::tests::files_selected_passes_files_and_overrides_to_execution ... ok
[INFO] [stdout] test tui::app::tests::home_confirm_recipes_navigates_to_detail ... ok
[INFO] [stdout] test tui::app::tests::editor_save_overwrites_existing_file ... ok
[INFO] [stdout] test tui::app::tests::config_confirmed_url_mode_carries_overrides_to_execution ... ok
[INFO] [stdout] test tui::app::tests::home_confirm_library_empty_opens_library ... ok
[INFO] [stdout] test tui::app::tests::invalid_recipe_json_starts_on_home ... ok
[INFO] [stdout] test tui::app::tests::library_confirm_navigates_to_detail ... ok
[INFO] [stdout] test tui::app::tests::open_library_populates_model ... ok
[INFO] [stdout] test tui::app::tests::execution_complete_creates_results_model ... ok
[INFO] [stdout] test tui::app::tests::library_confirm_empty_shows_status ... ok
[INFO] [stdout] test tui::app::tests::initial_state_is_home ... ok
[INFO] [stdout] test tui::app::tests::open_editor_from_browser_creates_editor_screen ... ok
[INFO] [stdout] test tui::app::tests::files_selected_creates_execution_model ... ok
[INFO] [stdout] test tui::app::tests::execution_failure_preserves_error_in_results_transition ... ok
[INFO] [stdout] test tui::app::tests::home_confirm_new_recipe_opens_editor ... ok
[INFO] [stdout] test tui::app::tests::resolve_input_mode_for_slug_defaults_for_unknown ... ok
[INFO] [stdout] test tui::app::tests::new_flag_opens_blank_editor ... ok
[INFO] [stdout] test tui::app::tests::open_settings_creates_settings_model ... ok
[INFO] [stdout] test tui::app::tests::resolve_input_mode_for_slug_returns_file_upload_for_compress_images ... ok
[INFO] [stdout] test tui::app::tests::open_settings_picker_transitions_to_picker_screen ... ok
[INFO] [stdout] test tui::app::tests::quit_sets_should_quit ... ok
[INFO] [stdout] test tui::app::tests::recipe_json_opens_editor ... ok
[INFO] [stdout] test tui::app::tests::recipe_json_loads_nodes_into_editor ... ok
[INFO] [stdout] test tui::app::tests::resolve_input_mode_for_slug_returns_url_for_download_video ... ok
[INFO] [stdout] test tui::app::tests::results_message_forwarded_to_results_update ... ok
[INFO] [stdout] test tui::app::tests::telemetry_toggled_updates_settings_field ... ok
[INFO] [stdout] test tui::app::tests::settings_path_confirmed_updates_field_and_returns_to_settings ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_persists_to_config ... ok
[INFO] [stdout] test tui::app::tests::param_overrides_survive_detail_to_execution ... ok
[INFO] [stdout] test tui::app::tests::open_editor_from_library_creates_editor_screen ... ok
[INFO] [stdout] test tui::app::tests::run_another_goes_to_browser ... ok
[INFO] [stdout] test tui::bridge::tests::build_output_files_handles_unmatched ... ok
[INFO] [stdout] test tui::bridge::tests::build_output_files_merges_metadata ... ok
[INFO] [stdout] test tui::app::tests::settings_message_forwarded_to_settings_update ... ok
[INFO] [stdout] test tui::bridge::tests::extract_metadata_handles_missing ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_sets_status_on_save_success ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_surfaces_save_error ... ok
[INFO] [stdout] test tui::app::tests::settings_navigation ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_preserves_home_path_setting ... ok
[INFO] [stdout] test tui::bridge::tests::extract_metadata_reads_original_size ... ok
[INFO] [stdout] test tui::bridge::tests::extract_override_value_returns_none_when_missing ... ok
[INFO] [stdout] test tui::bridge::tests::extract_override_value_finds_by_param_name ... ok
[INFO] [stdout] test tui::event::tests::esc_maps_to_back ... ok
[INFO] [stdout] test tui::event::tests::ctrl_c_maps_to_quit ... ok
[INFO] [stdout] test tui::app::tests::settings_path_confirmed_saves_via_toml_config ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_swaps_theme_without_changing_screen ... ok
[INFO] [stdout] test tui::app::tests::with_paths_loads_toml_config ... ok
[INFO] [stdout] test tui::format::tests::format_size_human_readable ... ok
[INFO] [stdout] test tui::bridge::tests::extract_metadata_handles_non_numeric ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_iteration_takes_priority_over_file_count ... ok
[INFO] [stdout] test tui::event::tests::q_maps_to_quit ... ok
[INFO] [stdout] test tui::event::tests::unmapped_key_returns_none ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_pending_is_empty ... ok
[INFO] [stdout] test tui::format::tests::format_duration_boundary_at_one_second ... ok
[INFO] [stdout] test tui::format::tests::format_duration_human_readable ... ok
[INFO] [stdout] test tui::format::tests::format_size_boundary_at_one_kb ... ok
[INFO] [stdout] test tui::render_picker::tests::breadcrumb_preserves_trailing_segments ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_active_no_files_is_empty ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_active_with_files_shows_count ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_completed_shows_elapsed ... ok
[INFO] [stdout] test tui::app::tests::settings_roundtrip_home_path_survives_reload ... ok
[INFO] [stdout] test tui::app::tests::theme_changed_persists_to_disk_and_survives_reload ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_completed_sub_second ... ok
[INFO] [stdout] test tui::render_home_logo::tests::logo_lines_are_consistent_width ... ok
[INFO] [stdout] test tui::render_execution::tests::annotation_shows_iteration_for_loops ... ok
[INFO] [stdout] test tui::render_home_logo::tests::logo_returns_six_lines ... ok
[INFO] [stdout] test tui::render_picker::tests::breadcrumb_short_path_unchanged ... ok
[INFO] [stdout] test tui::screens::browser::tests::confirm_on_empty_list_returns_none ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_down_scrolls_viewport ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_movement_on_empty_list_is_safe ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_down_advances_by_one ... ok
[INFO] [stdout] test tui::screens::browser::tests::empty_search_shows_all_recipes ... ok
[INFO] [stdout] test tui::screens::browser::tests::enter_search_activates_search_mode ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_up_wraps_at_start ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_down_wraps_at_end ... ok
[INFO] [stdout] test tui::render_picker::tests::breadcrumb_truncates_long_path ... ok
[INFO] [stdout] test tui::screens::browser::tests::confirm_returns_selected_recipe_slug ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_up_moves_back_by_one ... ok
[INFO] [stdout] test tui::screens::browser::tests::initial_state_shows_all_recipes ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_filters_by_category ... ok
[INFO] [stdout] test tui::screens::browser::tests::resize_keeps_cursor_visible ... ok
[INFO] [stdout] test tui::screens::browser::tests::exit_search_deactivates_search_mode ... ok
[INFO] [stdout] test tui::screens::browser::tests::resize_updates_viewport_height ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_filters_by_description ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_filters_by_name ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_is_case_insensitive ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_reads_form_values_not_params ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_clamps_cursor_when_results_shrink ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_returns_all_param_overrides ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_skips_unmodified_params ... ok
[INFO] [stdout] test tui::screens::browser::tests::search_clear_resets_filter ... ok
[INFO] [stdout] test tui::screens::browser::tests::selected_recipe_returns_current ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_up_scrolls_viewport_back ... ok
[INFO] [stdout] test tui::screens::browser::tests::selected_recipe_returns_none_on_empty ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_includes_visible_conditional_params ... ok
[INFO] [stdout] test tui::screens::detail::tests::form_field_values_match_param_values ... ok
[INFO] [stdout] test tui::screens::detail::tests::focus_next_advances_via_form ... ok
[INFO] [stdout] test tui::screens::detail::tests::form_has_same_field_count_as_params ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_omits_hidden_params ... ok
[INFO] [stdout] test tui::screens::detail::tests::initial_focus_is_params_and_not_on_run ... ok
[INFO] [stdout] test tui::screens::detail::tests::initial_state_has_params_with_defaults ... ok
[INFO] [stdout] test tui::screens::detail::tests::initial_state_has_recipe_info ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_any_matches ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_any_none_match ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_single_matches ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_single_no_match ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_true_when_no_condition ... ok
[INFO] [stdout] test tui::screens::browser::tests::new_loads_bundled_catalog_recipes ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_run_focused_false_on_param ... ok
[INFO] [stdout] test tui::screens::detail::tests::confirm_uses_current_dir_when_allow_dirs_and_nothing_selected ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::boolean_param_becomes_confirm_field ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_param_visible_unknown_param_defaults_hidden ... ok
[INFO] [stdout] test tui::screens::detail::tests::is_run_focused_when_focus_is_run ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::enum_with_few_options_not_filterable ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_loads_compress_images ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_returns_none_for_unknown ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_populates_param_labels_from_metadata ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_skips_input_output_nodes ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::enum_param_becomes_select_field ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::enum_with_many_options_is_filterable ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::is_form_editing_false_when_idle ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::number_without_slider_control_disables_slider ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::is_form_editing_true_when_text_editing ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::number_with_constraints_becomes_number_field ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::update_visibility_uses_form_values_not_original ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::update_visibility_shows_matching_params ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::string_param_becomes_text_field ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::number_without_constraints_becomes_text_field ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::update_visibility_hides_conditional_params ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::theme_bridge_maps_styles ... ok
[INFO] [stdout] test tui::screens::browser::tests::cursor_up_wrap_scrolls_to_bottom ... ok
[INFO] [stdout] test tui::screens::detail_fields::tests::string_field_uses_placeholder_as_description ... ok
[INFO] [stdout] test tui::app::tests::telemetry_toggled_persists_to_disk ... ok
[INFO] [stdout] test tui::screens::detail_fields::tests::fields_sorted_by_order_then_alpha ... ok
[INFO] [stdout] test tui::screens::detail_fields::tests::number_field_includes_constraints ... ok
[INFO] [stdout] test tui::screens::detail_bridge::tests::number_with_slider_control_enables_slider ... ok
[INFO] [stdout] test tui::screens::detail_fields::tests::enum_field_produces_correct_options ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_carries_description ... ok
[INFO] [stdout] test tui::screens::detail_fields::tests::boolean_field_maps_correctly ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_multi_node_recipe_extracts_all_processor_params ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_creates_form_fields ... ok
[INFO] [stdout] test tui::screens::detail::tests::from_slug_carries_constraints ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_returns_none_for_file_upload ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_returns_none_for_missing_mode ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_returns_some_for_text_mode ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_returns_some_for_url_mode ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_uses_default_label_when_missing ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::extract_input_param_uses_placeholder_as_description ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::load_from_json_invalid ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::load_from_json_minimal ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::load_from_json_missing_nodes ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::load_from_json_valid_recipe ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::compress_images_quality_has_bounds ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::compress_images_has_quality_param ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::recipe_with_node_fields_shows_field_params ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::recipe_without_fields_shows_processor_params ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::download_video_shows_url_and_field_params ... ok
[INFO] [stdout] test tui::app::tests::back_navigation_from_browser_origin ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::download_video_recipe_json_parses ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::convert_format_has_enum_param ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::resize_images_has_dimension_params ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::rename_files_has_string_params ... ok
[INFO] [stdout] test tui::screens::editor::tests::cancel_delete_preserves_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::collapse_clears_form ... ok
[INFO] [stdout] test tui::screens::editor::tests::back_on_dirty_shows_confirmation ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_down_moves_to_next ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::download_video_has_url_as_first_param ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::params_carry_descriptions ... ok
[INFO] [stdout] test tui::screens::editor::tests::add_triggers_undo_snapshot ... ok
[INFO] [stdout] test tui::screens::editor::tests::back_on_clean_emits_back_action ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_move_clears_and_rebuilds_form ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::resize_images_has_boolean_param ... ok
[INFO] [stdout] test tui::screens::editor::tests::confirm_delete_removes_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_noop_when_empty ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_up_moves_to_prev ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_wraps_at_bottom ... ok
[INFO] [stdout] test tui::screens::editor::tests::dirty_cancel_stays_on_editor ... ok
[INFO] [stdout] test tui::screens::editor::tests::dirty_discard_emits_back ... ok
[INFO] [stdout] test tui::screens::editor::tests::dirty_save_emits_save_and_back ... ok
[INFO] [stdout] test tui::screens::editor::tests::delete_request_shows_confirmation ... ok
[INFO] [stdout] test tui::screens::editor::tests::expand_no_form_for_unknown_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::delete_on_empty_is_noop ... ok
[INFO] [stdout] test tui::screens::editor::tests::expand_builds_form_for_processor_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::delete_triggers_undo_snapshot ... ok
[INFO] [stdout] test tui::screens::editor::tests::expand_toggle_closes_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::form_edit_commit_updates_editor_model ... ok
[INFO] [stdout] test tui::screens::editor::tests::cursor_wraps_at_top ... ok
[INFO] [stdout] test tui::screens::editor::tests::move_at_bottom_is_noop ... ok
[INFO] [stdout] test tui::screens::editor::tests::expand_toggle_opens_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::move_up_swaps_nodes ... ok
[INFO] [stdout] test tui::screens::editor::tests::move_at_top_is_noop ... ok
[INFO] [stdout] test tui::screens::editor::tests::move_down_swaps_nodes ... ok
[INFO] [stdout] test tui::screens::editor::tests::form_edit_triggers_undo_snapshot ... ok
[INFO] [stdout] test tui::screens::editor::tests::picker_cursor_wraps ... ok
[INFO] [stdout] test tui::screens::editor::tests::picker_cancel_closes_overlay ... ok
[INFO] [stdout] test tui::screens::editor::tests::picker_select_adds_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::open_picker_enters_picker_mode ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::compress_images_has_no_url_param ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::compress_images_quality_has_slider_control ... ok
[INFO] [stdout] test tui::screens::editor::tests::save_emits_save_action ... ok
[INFO] [stdout] test tui::screens::editor::tests::picker_search_filters_by_name ... ok
[INFO] [stdout] test tui::screens::editor::tests::save_on_clean_editor_still_saves ... ok
[INFO] [stdout] test tui::screens::editor::tests::picker_shows_all_node_types ... ok
[INFO] [stdout] test tui::screens::editor::tests::redo_reapplies_undone_state ... ok
[INFO] [stdout] test tui::screens::editor::tests::reorder_cursor_follows_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::reorder_triggers_undo_snapshot ... ok
[INFO] [stdout] test tui::screens::editor::tests::undo_restores_previous_state ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::bool_conversion ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::build_form_creates_fields_for_processor_node ... ok
[INFO] [stdout] test tui::screens::editor::tests::undo_after_param_edit_restores_value ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::build_form_returns_none_for_io_node ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::build_form_populates_current_values ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::build_form_returns_none_for_unknown_type ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::collect_param_updates_returns_current_values ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::apply_form_message_updates_form_state ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::number_conversion ... ok
[INFO] [stdout] test tui::screens::execution::tests::child_node_started_upserts_existing ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::string_conversion ... ok
[INFO] [stdout] test tui::screens::editor_bridge::tests::form_edit_produces_undo_snapshot_via_update_param ... ok
[INFO] [stdout] test tui::screens::execution::tests::cancel_sets_cancelled ... ok
[INFO] [stdout] test tui::screens::execution::tests::command_output_populates_output_lines ... ok
[INFO] [stdout] test tui::screens::execution::tests::command_output_bounded_at_max ... ok
[INFO] [stdout] test tui::screens::execution::tests::iteration_started_resets_children ... ok
[INFO] [stdout] test tui::screens::execution::tests::file_progress_updates_percent ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::all_catalog_recipes_load ... ok
[INFO] [stdout] test tui::screens::execution::tests::child_node_completed_marks_child_done ... ok
[INFO] [stdout] test tui::screens::execution::tests::iteration_started_sets_iteration_count ... ok
[INFO] [stdout] test tui::screens::execution::tests::multiple_children_tracked_independently ... ok
[INFO] [stdout] test tui::screens::execution::tests::new_creates_idle_model ... ok
[INFO] [stdout] test tui::screens::execution::tests::child_node_started_adds_to_parent ... ok
[INFO] [stdout] test tui::screens::execution::tests::node_completed_marks_done ... ok
[INFO] [stdout] test tui::screens::execution::tests::node_failed_captures_error ... ok
[INFO] [stdout] test tui::screens::execution::tests::outputs_ready_stores_files_and_dir ... ok
[INFO] [stdout] test tui::screens::execution::tests::pipeline_completed_sets_status ... ok
[INFO] [stdout] test tui::screens::execution::tests::pipeline_started_sets_running ... ok
[INFO] [stdout] test tui::screens::execution::tests::pipeline_failed_captures_error ... ok
[INFO] [stdout] test tui::screens::execution::tests::tick_updates_elapsed ... ok
[INFO] [stdout] test tui::screens::home::tests::confirm_library_empty_shows_status ... ok
[INFO] [stdout] test tui::screens::execution::tests::with_inputs_stores_files_and_overrides ... ok
[INFO] [stdout] test tui::screens::execution::tests::node_progress_initializes_with_zero_counts ... ok
[INFO] [stdout] test tui::screens::execution::tests::node_started_activates_node ... ok
[INFO] [stdout] test tui::screens::home::tests::confirm_library_with_recipes_returns_slug ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::convert_format_enum_has_labels ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::rename_files_has_case_enum ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::clean_csv_has_boolean_controls ... ok
[INFO] [stdout] test tui::screens::execution::tests::pipeline_started_uses_node_info_for_real_ids ... ok
[INFO] [stdout] test tui::screens::home::tests::confirm_recipes_returns_index ... ok
[INFO] [stdout] test tui::screens::home::tests::confirm_settings_navigates ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_noop_on_empty_library ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_up_in_recipes_moves ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_up_in_library_moves ... ok
[INFO] [stdout] test tui::screens::detail_loader::tests::all_loaded_params_have_labels ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_up_in_recipes_saturates_at_zero ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_wraps_at_library_end ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_wraps_at_library_start ... ok
[INFO] [stdout] test tui::screens::home::tests::initial_state_focuses_library ... ok
[INFO] [stdout] test tui::screens::home::tests::library_names_len_returns_count ... ok
[INFO] [stdout] test tui::screens::home::tests::list_library_recipes_missing_dir ... ok
[INFO] [stdout] test tui::screens::home::tests::confirm_new_recipe_returns_new_recipe ... ok
[INFO] [stdout] test tui::screens::home::tests::list_library_recipes_empty_dir ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_down_in_library_moves ... ok
[INFO] [stdout] test tui::screens::home::tests::list_library_recipes_count_matches_len ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_noop_on_action_panes ... ok
[INFO] [stdout] test tui::screens::execution::tests::file_progress_tracks_per_node_counts ... ok
[INFO] [stdout] test tui::screens::home::tests::cursor_down_in_recipes_moves ... ok
[INFO] [stdout] test tui::screens::home::tests::prev_pane_cycles_library_to_settings ... ok
[INFO] [stdout] test tui::screens::home::tests::prev_pane_cycles_recipes_to_library ... ok
[INFO] [stdout] test tui::screens::library::tests::confirm_returns_selected_slug ... ok
[INFO] [stdout] test tui::screens::home::tests::next_pane_cycles_library_to_recipes ... ok
[INFO] [stdout] test tui::screens::library::tests::cursor_down_advances ... ok
[INFO] [stdout] test tui::screens::home::tests::next_pane_cycles_new_recipe_to_settings ... ok
[INFO] [stdout] test tui::screens::library::tests::confirm_on_empty_returns_none ... ok
[INFO] [stdout] test tui::screens::home::tests::next_pane_cycles_recipes_to_new_recipe ... ok
[INFO] [stdout] test tui::screens::library::tests::delete_cancel_clears_confirmation ... ok
[INFO] [stdout] test tui::screens::library::tests::cursor_up_wraps_at_start ... ok
[INFO] [stdout] test tui::screens::library::tests::delete_confirm_removes_entry ... ok
[INFO] [stdout] test tui::screens::library::tests::delete_on_empty_is_safe ... ok
[INFO] [stdout] test tui::screens::library::tests::delete_request_sets_confirmation ... ok
[INFO] [stdout] test tui::screens::library::tests::enter_search_activates ... ok
[INFO] [stdout] test tui::screens::library::tests::empty_library_has_zero_entries ... ok
[INFO] [stdout] test tui::screens::library::tests::initial_state_shows_all_entries ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_empty_dir ... ok
[INFO] [stdout] test tui::screens::home::tests::next_pane_cycles_settings_to_library ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_missing_dir ... ok
[INFO] [stdout] test tui::screens::home::tests::list_library_recipes_returns_stems ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_reads_bnto_json_files ... ok
[INFO] [stdout] test tui::screens::library::tests::cursor_down_wraps_at_end ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_skips_invalid_json ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_ignores_non_bnto_files ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_uses_slug_when_no_name ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_cancel_discards ... ok
[INFO] [stdout] test tui::screens::library::tests::cursor_up_moves_back ... ok
[INFO] [stdout] test tui::screens::library::tests::exit_search_deactivates ... ok
[INFO] [stdout] test tui::screens::library::tests::cursor_movement_on_empty_list_is_safe ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_confirm_empty_name_preserves_original ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_confirm_updates_entry ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_input_appends_chars ... ok
[INFO] [stdout] test tui::screens::library::tests::search_clamps_cursor ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_start_captures_current_name ... ok
[INFO] [stdout] test tui::screens::library::tests::search_backspace_widens_results ... ok
[INFO] [stdout] test tui::screens::library::tests::search_clear_resets ... ok
[INFO] [stdout] test tui::screens::library::tests::search_filters_by_description ... ok
[INFO] [stdout] test tui::screens::library::tests::search_filters_by_name ... ok
[INFO] [stdout] test tui::screens::nav_history::tests::new_history_is_empty ... ok
[INFO] [stdout] test tui::screens::nav_history::tests::pop_empty_returns_none ... ok
[INFO] [stdout] test tui::screens::library::tests::search_is_case_insensitive ... ok
[INFO] [stdout] test tui::screens::nav_history::tests::lifo_order ... ok
[INFO] [stdout] test tui::screens::picker::tests::confirm_returns_explicit_selection_over_current_dir ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_down_advances_by_one ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_down_scrolls_viewport ... ok
[INFO] [stdout] test tui::screens::nav_history::tests::is_empty_transitions ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_movement_on_empty_entries_is_safe ... ok
[INFO] [stdout] test tui::screens::picker::tests::confirm_with_selected_files_returns_paths ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_down_wraps_at_end ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_up_moves_back_by_one ... ok
[INFO] [stdout] test tui::screens::picker::tests::confirm_returns_current_dir_when_allow_dirs_and_nothing_selected ... ok
[INFO] [stdout] test tui::screens::nav_history::tests::push_then_pop_returns_entry ... ok
[INFO] [stdout] test tui::screens::picker::tests::confirm_returns_none_when_no_files_selected ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_up_scrolls_viewport_back ... ok
[INFO] [stdout] test tui::screens::picker::tests::enter_search_activates_search_mode ... ok
[INFO] [stdout] test tui::screens::picker::tests::enter_dir_pushes_nav_history ... ok
[INFO] [stdout] test tui::screens::picker::tests::cursor_up_wraps_at_start ... ok
[INFO] [stdout] test tui::screens::picker::tests::filtered_entries_no_query_returns_all ... ok
[INFO] [stdout] test tui::screens::picker::tests::go_to_bottom_moves_to_last ... ok
[INFO] [stdout] test tui::screens::picker::tests::go_to_top_moves_to_first ... ok
[INFO] [stdout] test tui::screens::picker::tests::filtered_entries_is_case_insensitive ... ok
[INFO] [stdout] test tui::screens::library::tests::load_library_entries_sorted_by_name ... ok
[INFO] [stdout] test tui::screens::picker::tests::exit_search_deactivates_but_keeps_query ... ok
[INFO] [stdout] test tui::screens::library::tests::rename_backspace_removes_char ... ok
[INFO] [stdout] test tui::screens::picker::tests::initial_state_has_slug_and_dir ... ok
[INFO] [stdout] test tui::screens::picker::tests::entries_sorted_dirs_first_then_files_alpha ... ok
[INFO] [stdout] test tui::screens::picker::tests::resize_adjusts_viewport_offset ... ok
[INFO] [stdout] test tui::screens::picker::tests::filtered_entries_narrows_by_name ... ok
[INFO] [stdout] test tui::screens::picker::tests::page_down_moves_cursor_by_viewport_height ... ok
[INFO] [stdout] test tui::screens::picker::tests::parent_dir_without_history_resets_cursor ... ok
[INFO] [stdout] test tui::screens::picker::tests::parent_dir_pops_nav_history ... ok
[INFO] [stdout] test tui::screens::picker::tests::page_up_moves_cursor_back ... ok
[INFO] [stdout] test tui::screens::picker::tests::resize_updates_viewport_height ... ok
[INFO] [stdout] test tui::screens::picker::tests::search_backspace_on_empty_exits_search ... ok
[INFO] [stdout] test tui::screens::picker::tests::search_clear_empties_query ... ok
[INFO] [stdout] test tui::screens::picker::tests::search_input_appends_characters ... ok
[INFO] [stdout] test tui::screens::picker::tests::select_all_includes_dirs_when_allow_dirs ... ok
[INFO] [stdout] test tui::screens::picker::tests::search_input_resets_cursor_to_zero ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_select_adds_file_to_selected ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_metadata_flips_flag ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_hidden_flips_flag ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_select_ignores_directories_by_default ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_select_removes_if_already_selected ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_select_deselects_directory_when_allow_dirs ... ok
[INFO] [stdout] test tui::screens::picker::tests::search_backspace_removes_last_char ... ok
[INFO] [stdout] test tui::screens::picker::tests::select_all_toggles_off_when_all_selected ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::extensions_for_invalid_json_returns_empty ... ok
[INFO] [stdout] test tui::screens::picker::tests::select_all_selects_all_files ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_select_allows_directories_when_allow_dirs ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::format_mode_standard_permissions ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::matches_extensions_allows_all_when_empty ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::needs_directory_input_false_for_invalid_json ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::needs_directory_input_false_without_file_collect ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::matches_extensions_rejects_non_matching ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::matches_extensions_with_valid_ext ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::mime_to_extensions_known_types ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::extensions_from_mimes_deduplicates_and_sorts ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::needs_directory_input_true_for_file_collect ... ok
[INFO] [stdout] test tui::screens::preview::tests::cursor_down_wraps_at_end ... ok
[INFO] [stdout] test tui::screens::preview::tests::cursor_up_moves_back ... ok
[INFO] [stdout] test tui::screens::preview::tests::cursor_up_wraps_at_start ... ok
[INFO] [stdout] test tui::screens::preview::tests::empty_entries_cursor_stays_at_zero ... ok
[INFO] [stdout] test tui::screens::results::tests::cursor_down_advances ... ok
[INFO] [stdout] test tui::screens::preview::tests::cursor_down_advances ... ok
[INFO] [stdout] test tui::screens::results::tests::cursor_up_wraps_at_start ... ok
[INFO] [stdout] test tui::screens::results::tests::file_savings_percent_none_when_equal ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::mime_to_extensions_unknown_returns_empty ... ok
[INFO] [stdout] test tui::screens::picker::tests::toggle_hidden_resets_cursor_and_selection ... ok
[INFO] [stdout] test tui::screens::preview::tests::new_creates_model_with_entries ... ok
[INFO] [stdout] test tui::screens::preview::tests::preserves_execution_inputs_for_confirm ... ok
[INFO] [stdout] test tui::screens::results::tests::cursor_down_wraps_at_end ... ok
[INFO] [stdout] test tui::screens::results::tests::cursor_up_moves_back ... ok
[INFO] [stdout] test tui::screens::results::tests::file_savings_percent_none_when_output_grew ... ok
[INFO] [stdout] test tui::screens::results::tests::file_savings_percent_normal_reduction ... ok
[INFO] [stdout] test tui::screens::results::tests::new_creates_model_with_outputs ... ok
[INFO] [stdout] test tui::screens::results::tests::savings_none_when_no_original ... ok
[INFO] [stdout] test tui::screens::results::tests::savings_percent_zero_when_sizes_equal ... ok
[INFO] [stdout] test tui::screens::results::tests::savings_percent_zero_when_output_grew ... ok
[INFO] [stdout] test tui::screens::results::tests::savings_percentage ... ok
[INFO] [stdout] test tui::screens::settings::tests::focus_next_advances ... ok
[INFO] [stdout] test tui::screens::settings::tests::apply_empty_home_becomes_none ... ok
[INFO] [stdout] test tui::screens::settings::tests::focus_next_wraps ... ok
[INFO] [stdout] test tui::screens::settings::tests::apply_to_config_maps_home_path ... ok
[INFO] [stdout] test tui::screens::settings::tests::home_path_field_is_editable ... ok
[INFO] [stdout] test tui::screens::settings::tests::telemetry_field_shows_on_or_off ... ok
[INFO] [stdout] test tui::screens::settings::tests::theme_field_is_not_editable ... ok
[INFO] [stdout] test tui::screens::settings::tests::three_settings_fields ... ok
[INFO] [stdout] test tui::screens::results::tests::file_savings_percent_none_when_original_zero ... ok
[INFO] [stdout] test tui::screens::viewport::tests::cursor_above_viewport_scrolls_up ... ok
[INFO] [stdout] test tui::screens::settings::tests::focus_prev_wraps ... ok
[INFO] [stdout] test tui::screens::settings::tests::from_toml_config_roundtrips_home ... ok
[INFO] [stdout] test tui::screens::results::tests::savings_still_computed_when_some_files_grew ... ok
[INFO] [stdout] test tui::screens::settings::tests::telemetry_field_is_not_editable ... ok
[INFO] [stdout] test logging::tests::returns_none_for_nonexistent_dir ... FAILED
[INFO] [stdout] test tui::screens::viewport::tests::cursor_below_viewport_scrolls_down ... ok
[INFO] [stdout] test tui::screens::viewport::tests::cursor_within_viewport_no_change ... ok
[INFO] [stdout] test tui::screens::viewport::tests::go_to_bottom_positions_last_visible ... ok
[INFO] [stdout] test tui::screens::viewport::tests::go_to_top_returns_zero ... ok
[INFO] [stdout] test tui::screens::viewport::tests::page_down_advances_and_clamps ... ok
[INFO] [stdout] test tui::screens::viewport::tests::page_up_retreats_and_clamps ... ok
[INFO] [stdout] test tui::screens::viewport::tests::page_down_at_bottom_clamps ... ok
[INFO] [stdout] test tui::screens::picker_loader::tests::extensions_for_compress_images ... ok
[INFO] [stdout] test tui::screens::wizard::tests::auto_naming_uses_operation_label ... ok
[INFO] [stdout] test tui::screens::picker::tests::filtered_entries_always_includes_dirs ... ok
[INFO] [stdout] test tui::screens::wizard::tests::category_count_matches_node_types ... ok
[INFO] [stdout] test tui::screens::wizard::tests::back_from_category_exits_wizard ... ok
[INFO] [stdout] test tui::screens::wizard::tests::category_cursor_wraps_down ... ok
[INFO] [stdout] test tui::screens::wizard::tests::complete_produces_valid_editor_model ... ok
[INFO] [stdout] test tui::screens::wizard::tests::form_message_updates_form_state ... ok
[INFO] [stdout] test tui::screens::wizard::tests::category_cursor_wraps_up ... ok
[INFO] [stdout] test tui::screens::wizard::tests::back_from_operation_returns_to_category ... ok
[INFO] [stdout] test tui::screens::wizard::tests::back_from_complete_returns_to_configure_if_params_exist ... ok
[INFO] [stdout] test tui::screens::wizard::tests::category_confirm_advances_to_operation ... ok
[INFO] [stdout] test tui::screens::wizard::tests::back_from_configure_returns_to_operation ... ok
[INFO] [stdout] test tui::screens::wizard::tests::list_len_returns_operation_count_on_operation_step ... ok
[INFO] [stdout] test tui::screens::wizard::tests::operation_confirm_advances_to_configure ... ok
[INFO] [stdout] test tui::screens::wizard::tests::operation_cursor_wraps_down ... ok
[INFO] [stdout] test tui::screens::wizard::tests::list_len_returns_category_count_on_category_step ... ok
[INFO] [stdout] test tui::app::tests::editor_save_error_shows_status_message ... FAILED
[INFO] [stdout] test tui::screens::wizard::tests::operation_skips_config_when_no_params ... ok
[INFO] [stdout] test tui::screens::wizard::tests::configure_confirm_advances_to_complete ... ok
[INFO] [stdout] test tui::screens::wizard::tests::wizard_includes_image_category ... ok
[INFO] [stdout] test tui::screens::wizard::tests::operations_filtered_by_category ... ok
[INFO] [stdout] test tui::screens::wizard::tests::wizard_excludes_io_control_data_categories ... ok
[INFO] [stdout] test tui::screens::wizard::tests::wizard_starts_at_category_step ... ok
[INFO] [stdout] test tui::tests::detail_arrow_keys_cycle_select ... ok
[INFO] [stdout] test tui::tests::browser_search_mode_esc_exits ... ok
[INFO] [stdout] test tui::tests::browser_enter_selects_recipe ... ok
[INFO] [stdout] test tui::tests::browser_j_moves_cursor_down ... ok
[INFO] [stdout] test tui::tests::detail_editing_blocks_global_q ... ok
[INFO] [stdout] test tui::tests::detail_editing_backspace ... ok
[INFO] [stdout] test tui::tests::browser_search_mode_captures_chars ... ok
[INFO] [stdout] test tui::tests::browser_slash_enters_search ... ok
[INFO] [stdout] test tui::tests::browser_arrow_keys_navigate ... ok
[INFO] [stdout] test tui::tests::detail_esc_goes_back ... ok
[INFO] [stdout] test tui::tests::detail_d_resets_default ... ok
[INFO] [stdout] test tui::tests::browser_k_moves_cursor_up ... ok
[INFO] [stdout] test tui::tests::detail_enter_confirms_when_no_params ... ok
[INFO] [stdout] test tui::tests::detail_k_focuses_prev_param ... ok
[INFO] [stdout] test tui::tests::detail_editing_captures_chars ... ok
[INFO] [stdout] test tui::tests::detail_tab_advances_focus_in_params ... ok
[INFO] [stdout] test tui::tests::detail_q_quits ... ok
[INFO] [stdout] test tui::tests::detail_p_key_triggers_preview ... ok
[INFO] [stdout] test tui::tests::detail_left_right_cycles ... ok
[INFO] [stdout] test tui::tests::detail_tab_confirms_from_run_focus ... ok
[INFO] [stdout] test tui::tests::execution_enter_continues_when_completed ... ok
[INFO] [stdout] test tui::tests::detail_arrow_keys_navigate ... ok
[INFO] [stdout] test tui::tests::execution_unmapped_key_returns_none ... ok
[INFO] [stdout] test tui::tests::execution_q_quits ... ok
[INFO] [stdout] test tui::tests::home_arrow_keys_navigate_cursor ... ok
[INFO] [stdout] test tui::tests::execution_enter_continues_when_failed ... ok
[INFO] [stdout] test tui::tests::home_h_cycles_pane_backward ... ok
[INFO] [stdout] test tui::tests::home_j_moves_cursor_down ... ok
[INFO] [stdout] test tui::tests::home_l_cycles_pane_forward ... ok
[INFO] [stdout] test tui::tests::execution_esc_cancels ... ok
[INFO] [stdout] test tui::tests::home_tab_cycles_pane ... ok
[INFO] [stdout] test tui::tests::home_shift_tab_cycles_pane_backward ... ok
[INFO] [stdout] test tui::tests::picker_a_selects_all ... ok
[INFO] [stdout] test tui::tests::browser_search_mode_backspace ... ok
[INFO] [stdout] test tui::tests::detail_enter_starts_edit_when_params_exist ... ok
[INFO] [stdout] test tui::tests::detail_editing_esc_cancels ... ok
[INFO] [stdout] test tui::tests::picker_backspace_goes_to_parent ... ok
[INFO] [stdout] test tui::tests::detail_enter_starts_edit_on_text_field ... ok
[INFO] [stdout] test tui::tests::detail_enter_confirms_on_run_action ... ok
[INFO] [stdout] test tui::tests::picker_dot_toggles_hidden ... ok
[INFO] [stdout] test tui::tests::execution_enter_ignored_while_running ... ok
[INFO] [stdout] test tui::tests::picker_enter_on_dir_enters_dir ... ok
[INFO] [stdout] test tui::tests::detail_editing_enter_commits ... ok
[INFO] [stdout] test tui::tests::detail_j_focuses_next_param ... ok
[INFO] [stdout] test tui::tests::picker_h_goes_to_parent ... ok
[INFO] [stdout] test tui::tests::detail_space_toggles_confirm ... ok
[INFO] [stdout] test tui::tests::home_k_moves_cursor_up ... ok
[INFO] [stdout] test tui::tests::home_enter_confirms_selection ... ok
[INFO] [stdout] test tui::tests::picker_esc_goes_back ... ok
[INFO] [stdout] test tui::tests::picker_enter_with_selected_files_confirms ... ok
[INFO] [stdout] test tui::tests::picker_right_on_dir_enters_dir ... ok
[INFO] [stdout] test tui::tests::picker_q_quits ... ok
[INFO] [stdout] test tui::tests::picker_l_on_file_is_noop ... ok
[INFO] [stdout] test tui::tests::picker_k_moves_cursor_up ... ok
[INFO] [stdout] test tui::tests::picker_pgdn_pages_down ... ok
[INFO] [stdout] test tui::tests::picker_shift_k_pages_up ... ok
[INFO] [stdout] test tui::tests::preview_enter_confirms ... ok
[INFO] [stdout] test tui::tests::picker_g_goes_to_top ... ok
[INFO] [stdout] test tui::tests::picker_pgup_pages_up ... ok
[INFO] [stdout] test tui::tests::picker_shift_g_goes_to_bottom ... ok
[INFO] [stdout] test tui::tests::picker_shift_j_pages_down ... ok
[INFO] [stdout] test tui::tests::picker_j_moves_cursor_down ... ok
[INFO] [stdout] test tui::tests::picker_space_toggles_select ... ok
[INFO] [stdout] test tui::tests::picker_l_on_dir_enters_dir ... ok
[INFO] [stdout] test tui::tests::picker_left_arrow_goes_to_parent ... ok
[INFO] [stdout] test tui::tests::results_arrow_keys_navigate ... ok
[INFO] [stdout] test tui::tests::preview_esc_goes_back ... ok
[INFO] [stdout] test tui::tests::settings_jk_navigate_fields ... ok
[INFO] [stdout] test tui::tests::preview_k_moves_cursor_up ... ok
[INFO] [stdout] test tui::tests::preview_q_quits ... ok
[INFO] [stdout] test tui::tests::preview_back_returns_to_detail ... ok
[INFO] [stdout] test tui::tests::results_j_moves_cursor_down ... ok
[INFO] [stdout] test tui::tests::settings_left_right_toggles_telemetry_on_telemetry_field ... ok
[INFO] [stdout] test tui::tests::s_key_opens_settings_from_browser ... ok
[INFO] [stdout] test tui::tests::preview_j_moves_cursor_down ... ok
[INFO] [stdout] test tui::tests::results_k_moves_cursor_up ... ok
[INFO] [stdout] test tui::tests::settings_enter_on_theme_field_returns_none ... ok
[INFO] [stdout] test tui::tests::settings_enter_on_telemetry_field_returns_none ... ok
[INFO] [stdout] test tui::theme::tests::display_name_returns_human_readable_labels ... ok
[INFO] [stdout] test tui::tests::settings_enter_opens_picker_on_editable_field ... ok
[INFO] [stdout] test tui::theme::tests::each_theme_has_distinct_active_color ... ok
[INFO] [stdout] test tui::theme::tests::from_str_lossy_error_includes_input ... ok
[INFO] [stdout] test tui::theme::tests::heading_selected_and_key_hint_are_bold ... ok
[INFO] [stdout] test tui::theme::tests::los_angeles_uses_terracotta ... ok
[INFO] [stdout] test tui::theme::tests::monaco_uses_sunset_amber ... ok
[INFO] [stdout] test tui::theme::tests::muted_text_uses_dark_gray ... ok
[INFO] [stdout] test tui::theme::tests::status_colors_are_per_theme ... ok
[INFO] [stdout] test tui::theme::tests::selected_and_border_use_active_color ... ok
[INFO] [stdout] test tui::theme::tests::body_text_uses_terminal_native ... ok
[INFO] [stdout] test tui::theme::tests::theme_variant_from_str_lossy ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::directory_has_no_checkbox ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::file_with_size_renders_size_text ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::metadata_off_hides_permissions ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::metadata_on_shows_permissions ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::renders_all_entries ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::symlink_shows_arrow_target ... ok
[INFO] [stdout] test tui::widgets::help_bar::tests::renders_all_hints_with_separators ... ok
[INFO] [stdout] test tui::widgets::search_input::tests::renders_cursor_only_when_active_empty ... ok
[INFO] [stdout] test tui::widgets::help_bar::tests::renders_single_hint_no_separator ... ok
[INFO] [stdout] test tui::widgets::search_input::tests::renders_none_when_inactive_and_no_query ... ok
[INFO] [stdout] test tui::tests::s_key_does_nothing_outside_browser ... ok
[INFO] [stdout] test tui::tests::results_q_quits ... ok
[INFO] [stdout] test tui::tests::settings_left_right_cycle_themes_on_theme_field ... ok
[INFO] [stdout] test tui::widgets::search_input::tests::renders_query_with_cursor_when_active ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::error_status_message_shown ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::includes_recipe_count ... ok
[INFO] [stdout] test tui::theme::tests::tokyo_uses_electric_blue ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::selected_file_shows_checkbox ... ok
[INFO] [stdout] test tui::widgets::search_input::tests::renders_query_when_inactive_with_query ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::unselected_file_shows_empty_checkbox ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::includes_theme_name ... ok
[INFO] [stdout] test tui::tests::results_r_runs_another ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::includes_version ... ok
[INFO] [stdout] test tui::tests::settings_esc_goes_back ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::singular_recipe_count ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::directory_has_no_size_text ... ok
[INFO] [stdout] test tui::tests::settings_unmapped_key_returns_none ... ok
[INFO] [stdout] test tui::widgets::file_list::tests::empty_entries_returns_empty_lines ... ok
[INFO] [stdout] test tui::widgets::help_bar::tests::renders_empty_for_no_hints ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::status_message_overrides_default_line ... ok
[INFO] [stdout] test tui::widgets::status_line::tests::no_status_message_shows_default ... ok
[INFO] [stdout] test tui::tests::handle_key_q_quits_from_any_screen ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- logging::tests::returns_none_for_nonexistent_dir stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'logging::tests::returns_none_for_nonexistent_dir' (150) panicked at src/logging.rs:181:9:
[INFO] [stdout] assertion failed: FileLogger::new(&bad_path, LogLevel::Trace).is_none()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5ecd66944908 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5ecd66944908 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::trace_unsynchronized::<std[d054f6f42beb1baa]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5ecd66944908 - std[d054f6f42beb1baa]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5ecd66944908 - <<std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[5a1c3e9896636f3a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5ecd6695df7a - <core[5a1c3e9896636f3a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5ecd6695df7a - core[5a1c3e9896636f3a]::fmt::write
[INFO] [stdout]    6:     0x5ecd66949c62 - std[d054f6f42beb1baa]::io::default_write_fmt::<alloc[154f689e5dd3bae5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5ecd66949c62 - <alloc[154f689e5dd3bae5]::vec::Vec<u8> as std[d054f6f42beb1baa]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5ecd6691e256 - <std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5ecd6691e256 - std[d054f6f42beb1baa]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5ecd6693a609 - std[d054f6f42beb1baa]::panicking::default_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5ecd65cadd8c - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5ecd65cadd8c - test[fad20673b750c10e]::test_main_inner::<test[fad20673b750c10e]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5ecd6693a7c2 - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5ecd6693a7c2 - std[d054f6f42beb1baa]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5ecd6691e344 - std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5ecd66915759 - std[d054f6f42beb1baa]::sys::backtrace::__rust_end_short_backtrace::<std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5ecd6691f53d - __rustc[7ab284efd7f33ea8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5ecd6695e7ec - core[5a1c3e9896636f3a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5ecd6695e7b2 - core[5a1c3e9896636f3a]::panicking::panic
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5ecd657c969d - bnto[71408bf111443aca]::logging::tests::returns_none_for_nonexistent_dir
[INFO] [stdout]                                at /opt/rustwide/workdir/src/logging.rs:181:9
[INFO] [stdout]   21:     0x5ecd657c5e27 - bnto[71408bf111443aca]::logging::tests::returns_none_for_nonexistent_dir::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/logging.rs:179:42
[INFO] [stdout]   22:     0x5ecd65674b16 - <bnto[71408bf111443aca]::logging::tests::returns_none_for_nonexistent_dir::{closure#0} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5ecd65ca0e6b - <fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5ecd65ca0e6b - test[fad20673b750c10e]::__rust_begin_short_backtrace::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:724:18
[INFO] [stdout]   25:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:74
[INFO] [stdout]   26:     0x5ecd65cae6e5 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panicking::catch_unwind::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test_in_process
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:27
[INFO] [stdout]   31:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:668:43
[INFO] [stdout]   32:     0x5ecd65ca9244 - test[fad20673b750c10e]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:698:41
[INFO] [stdout]   33:     0x5ecd65ca9244 - std[d054f6f42beb1baa]::sys::backtrace::__rust_begin_short_backtrace::<test[fad20673b750c10e]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   35:     0x5ecd65cb1762 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panicking::catch_unwind::<(), core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   40:     0x5ecd65cb1762 - <std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x5ecd6694368f - <alloc[154f689e5dd3bae5]::boxed::Box<dyn core[5a1c3e9896636f3a]::ops::function::FnOnce<(), Output = ()> + core[5a1c3e9896636f3a]::marker::Send> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   42:     0x5ecd6694368f - <std[d054f6f42beb1baa]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x71ff07e42aa4 - <unknown>
[INFO] [stdout]   44:     0x71ff07ecfa64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tui::app::tests::editor_save_error_shows_status_message stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tui::app::tests::editor_save_error_shows_status_message' (321) panicked at src/tui/app.rs:2036:9:
[INFO] [stdout] expected failure message, got Some("Saved will-fail.bnto.json")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5ecd66944908 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5ecd66944908 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::trace_unsynchronized::<std[d054f6f42beb1baa]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5ecd66944908 - std[d054f6f42beb1baa]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5ecd66944908 - <<std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[5a1c3e9896636f3a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5ecd6695df7a - <core[5a1c3e9896636f3a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5ecd6695df7a - core[5a1c3e9896636f3a]::fmt::write
[INFO] [stdout]    6:     0x5ecd66949c62 - std[d054f6f42beb1baa]::io::default_write_fmt::<alloc[154f689e5dd3bae5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x5ecd66949c62 - <alloc[154f689e5dd3bae5]::vec::Vec<u8> as std[d054f6f42beb1baa]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x5ecd6691e256 - <std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5ecd6691e256 - std[d054f6f42beb1baa]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5ecd6693a609 - std[d054f6f42beb1baa]::panicking::default_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5ecd65cadd8c - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x5ecd65cadd8c - test[fad20673b750c10e]::test_main_inner::<test[fad20673b750c10e]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5ecd6693a7c2 - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x5ecd6693a7c2 - std[d054f6f42beb1baa]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5ecd6691e312 - std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5ecd66915759 - std[d054f6f42beb1baa]::sys::backtrace::__rust_end_short_backtrace::<std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5ecd6691f53d - __rustc[7ab284efd7f33ea8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5ecd6695e7ec - core[5a1c3e9896636f3a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5ecd657d9205 - bnto[71408bf111443aca]::tui::app::tests::editor_save_error_shows_status_message
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tui/app.rs:2036:9
[INFO] [stdout]   20:     0x5ecd657c68b7 - bnto[71408bf111443aca]::tui::app::tests::editor_save_error_shows_status_message::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tui/app.rs:2020:48
[INFO] [stdout]   21:     0x5ecd65676116 - <bnto[71408bf111443aca]::tui::app::tests::editor_save_error_shows_status_message::{closure#0} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5ecd65ca0e6b - <fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5ecd65ca0e6b - test[fad20673b750c10e]::__rust_begin_short_backtrace::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x5ecd65cae6e5 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panicking::catch_unwind::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x5ecd65cae6e5 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test_in_process
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x5ecd65cae6e5 - test[fad20673b750c10e]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x5ecd65ca9244 - test[fad20673b750c10e]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x5ecd65ca9244 - std[d054f6f42beb1baa]::sys::backtrace::__rust_begin_short_backtrace::<test[fad20673b750c10e]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x5ecd65cb1762 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panicking::catch_unwind::<(), core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5ecd65cb1762 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x5ecd65cb1762 - <std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5ecd6694368f - <alloc[154f689e5dd3bae5]::boxed::Box<dyn core[5a1c3e9896636f3a]::ops::function::FnOnce<(), Output = ()> + core[5a1c3e9896636f3a]::marker::Send> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   41:     0x5ecd6694368f - <std[d054f6f42beb1baa]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x71ff07e42aa4 - <unknown>
[INFO] [stdout]   43:     0x71ff07ecfa64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     logging::tests::returns_none_for_nonexistent_dir
[INFO] [stdout]     tui::app::tests::editor_save_error_shows_status_message
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 845 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.66s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin bnto`
[INFO] running `Command { std: "docker" "inspect" "04ff98064c9834b2569dc6f878b9de19b48e8851bf6491b2cc2911bb303080e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "04ff98064c9834b2569dc6f878b9de19b48e8851bf6491b2cc2911bb303080e0", kill_on_drop: false }`
[INFO] [stdout] 04ff98064c9834b2569dc6f878b9de19b48e8851bf6491b2cc2911bb303080e0
